With the convergence of communication and entertainment applications, mobile device manufacturers are challenged to reduce power consumption while delivering better performance; in other words, do more for less. Power management is crucial in battery-powered systems because it helps conserve power when the systems are inactive.
When a system is not in use, it is put into a “sleep state” which is a low-power consuming state. In this “sleep state,” the system is not performing any useful tasks for the user. As an example, power may be conserved by switching off a display when the system is inactive for some time.
Existing systems address the need for efficient power consumption by defining various processor states called C-states and P-states. C-states correspond to a processor either executing instructions or being in an idle state. P-states correspond to sets of pairs of voltage and frequency states. Operating systems deploy CPUIDLE and CPUFREQ subsystems to conserve power. Based on workload, CPUFREQ subsystems either lower or increase the voltage and frequency of each core present in a system. In some situations, CPUFREQ subsystems can choose to apply different C-states for each core present in a system, thus further reducing the system's power needs. Upon a wakeup by an interrupt, CPUFREQ subsystems may cause a system to transition into an appropriate C-state (C0) with its cores being put in high voltage and frequency states. Afterwards, based on current workload of the system, the subsystems may lower the voltage and frequency of the cores.
In battery powered handheld systems, often a majority of interrupts and their applications could be serviced in low voltage and frequency states to save power. In such systems, the above technique may cause a processor core to go to a higher P-state at first, and then come down to a lower P-state that is more appropriate for the current workload of the system. For example, on receiving wakeup events, a device may come out of a “sleep state”, operating at a high performance point, irrespective of the demand that is placed on the device. Based on the demand, the device may later be put into an optimal performance point. However, the transition from the high performance point to the optimal performance point may be inefficient in some instances.
Similarly, on receiving wakeup events, secondary cores of the device may come out of a sleep state, after which the secondary cores may be put into an optimal performance point or sleep state based on the demand that is placed on the device. Similarly, this transition may also be inefficient at times. Accordingly, the need exists for new and more efficient power management techniques.